package com.ttbj.salesman.dao;


import org.apache.ibatis.annotations.Param;

import com.ttbj.api.dto.Page;
import com.ttbj.api.dto.SalesmanDto;
import com.ttbj.salesman.bean.po.Role;
import com.ttbj.salesman.bean.po.Salesman;

import java.util.List;


public interface RoleMapper {
    /**
     * 根据用户主键ID查询角色
     * @param userId 用户主键ID
     * @return 角色信息
     */
    Role querySalemanRoleById(@Param("salesmanId") Long salesmanId);

    /**
     * 分页查询所有角色，每一个公司显示每公司的角色
     * @param page 分页
     * @Param salesmanDto 用户
     * @Param isDelete 公司是否删除标记
     * @return
     */
    List<Role> queryAllSalesmanRoleByPage(@Param("page") Page page, @Param("cs") SalesmanDto salesmanDto, @Param("admin") String admin);

    /**
     * 查询所有角色
     * 暂时没用到
     * @return
     */
    List<Role> queryAllUserRole(@Param("userRole") Role userRole, @Param("cs") SalesmanDto salesmanDto);

    /**
     * 统计角色数量
     * @param salesmanDto 用户
     * @param isDelete 是否删除
     * @return
     */
    Integer queryAllSalesmanRoleByPageCount(@Param("cs") Salesman salesman, @Param("admin") String admin);

    /**
     * 新增角色
     * @param role 角色信息
     * @param comnum 公司编号
     */
    void addRole(Role role);

    /**
     * 删除角色
     * @param roleId 角色ID
     */
    void deleteRoleById(@Param("roleId") Long roleId);

    /**
     * 根据ID更新角色
     * @param role
     */
    void updateRoleById(Role role);

    /**
     * 根据ID查询角色
     * @param roleId 角色ID
     * @return
     */
    Role queryRoleById(@Param("roleId") long roleId);

    /**
     * 根据角色名查询角色
     * @param rolename 角色名
     * @return
     */
    Role queryRoleByName(@Param("rolename") String rolename, @Param("roleId") Integer roleId);
    
    /**
     * 根据公司编号查询角色 ，如果公司编号为null，则只查询超管角色信息
     * 如果不为null，则查询admin角色和出本公司下的角色信息
     * @param comNum
     * @return
     */
    List<Role> queryRolesByComnum(@Param("comNum") String comNum, @Param("admin") String admin);

}
